#ifndef DBPLOTWIDGET_H
#define DBPLOTWIDGET_H

#include <QWidget>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QMap>
#include <QSqlRecord>
#include <QDateTime>
#include <QtPrintSupport>
#include "BtWidget_global.h"
#include "qcustomplot.h"


namespace Ui {
class dbPlotWidget;
}

struct PlotItemInfo{
    QString name;
    QString filed;
    QColor color;
    QString yLabel;
    bool bVisible;
};

class BTWIDGET_EXPORT dbPlotWidget : public QWidget
{
    Q_OBJECT

public:
    explicit dbPlotWidget(QWidget *parent = nullptr);
    ~dbPlotWidget();

    /*------------------- 数据库相关设置 -----------------*/
    void setDbInfo(const QString &dbFileName, const QString &dbCommName);
    void setDbQueryInfo(const QString &dbTableName,     /* "tableName" */
                        const QString &dbColumnsSql,    /* "id,name,index" */
                        const QString &dbWhereSql,      /* "where id>10" */
                        const QString &dbOrderSql);     /* "id asc" */
    //设置数据库文件名称
    void setDbFileName(const QString& dbFileName);
    //设置数据库连接连接名称
    QString dbCommName() const;
    void setDbCommName(const QString& dbCommName);
    //设置表名称
    void setDbTableName(const QString &dbTableName);
    //设置查询列名称
    void setDbColumnsSql(const QString &dbColumnsSql);
    //设置排序条件
    void setDbOrderSql(const QString &dbOrderSql);
    //设置查询条件
    void setDbWhereSql(const QString &dbWhereSql);
    //设置统计表行数的字段**
//    void setDbCountName(const QString &dbCountName);

    /*------------------- 曲线绘制相关 -----------------*/
    void initPlotWidget(void);
    void SetPlotVisible(int index, bool visible);

    void setXAxisFiled(QString filed);
    void AddOnePlot(QString name, QString filed, QColor color,QString yLabel, bool bVisible=true);

    /*------------------- 执行代码 -----------------*/
    bool query();    //查询

private slots:
    void selectionChanged();

private:
    Ui::dbPlotWidget *ui;

    //需要设置的变量
    QString m_dbFileName;
    QString m_dbCommName;   //设置数据库连接名称
    QString m_dbTableName;  //数据库表名称
    QString m_dbColumnsSql; //查询列名称
    QString m_dbOrderSql;   //排序条件
    QString m_dbWhereSql;   //查询条件
    QString m_dbCountName;  //设置统计表行数的字段

    QString m_sqlString;    //查询字符串
    QString m_sqlTemp;

    QSqlDatabase m_Database;
    QCustomPlot* m_pCustomPlot;

    QString m_xAxisFiled;
    QVector<PlotItemInfo> m_PlotItems;

//    QVector<double> xStartTime;
};

#endif // DBPLOTWIDGET_H
